Next:
2. enum hack & inline
, Previous:
4. Local Static Object
, Up:
Index
3. member twin method
비상수 operator[]를 상수 버전으로 호출
class
TextBlock
{
public
:
// ...
const
char
&
operator
[
]
(
std
::
size_t
position
)
const
{
// ...
return
text
[
position
]
;
}
// const method
char
&
operator
[
]
(
std
::
size_t
position
)
{
return
const_cast
<
char
&>
(
static_cast<
const
TextBlock
&>
(
*
this
)
[
position
]
)
;
}
// non const method
// ...
}
동일한 non-const method의 내용을 호출하기 위해서 *this를 static_cast로 const TextBlock으로 캐스팅 후,
return value를 const_cast를 이용해서 다시 char&로 변환해서 사용
const를 non-const를 호출해서 구현하는 것은 위험함.
(const method는 내부에서 변환하지 않음을 보장하지만, non-const method는 이를 보장하지 않아 위험)